package day09.HashMapTest;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.function.BiConsumer;
import java.util.function.Consumer;

public class Test5 {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("语文",99);
        map.put("数学",98);
        map.put("英语",97);
        map.put("物理",96);
        map.put("化学",99);
        System.out.println(map);
        Set<String> keySet = map.keySet();
        for (String key : keySet) {
            System.out.println(key);
        }
        keySet.forEach(e -> System.out.println(e));
        keySet.forEach(System.out ::println);
        /*
        遍历每一个键值对
        Set<Entry> entrySet()
         */
        Set<Map.Entry<String, Integer>> entries = map.entrySet();
        for (Map.Entry e: entries) {
            String key = (String) e.getKey();
            Integer value = (Integer) e.getValue();
            System.out.println(key+":"+value);
        }
        Collection<Integer> values = map.values();
        for (Integer v: values) {
            System.out.println(v);
        }
        /*
        jdk1.8之后的遍历模式
         */
//        keySet.forEach(new Consumer<String>(){
//            @Override
//            public void accept(String s) {
//
//            }
//        });
        keySet.forEach(s-> System.out.println(s));
        /*
            在lambda表达式中，如果参数与调用方法中传入的参数一致时，可以简写为方法引用:
            e ->对象.方法(e)
            可以写为:
            对象::方法
         */
//        keySet.forEach(System.out::println);
//        map.forEach(new BiConsumer<String, Integer>() {
//            @Override
//            public void accept(String k, Integer v) {
//                System.out.println(k+":"+v);
//            }
//        });
        map.forEach((k,v)-> System.out.println(k+":"+v));
    }


}
